/**
 * 默认标签标题
 */
export const DEFAULT_TAG_TITLE = "党建测评";

/**
 * 最美移动人模块
 */
export const BEAUTIFUL_MOBILE_NAME = "beautifulMobilePerson";

/**
 * 选择题模块
 */
export const CHOICE_QUESTION_MOBILE_NAME = "choiceQuestion";

/**
 * 图片模块
 */
export const IMAGE_FILE_MOBILE_NAME = "image";

/**
 * 简答题模块
 */
export const SHORT_ANSWER_MOBILE_NAME = "shortAnswerQuestion";

/**
 * 基础配置
 */
export const BASE_CONFIG_MOBILE_NAME = "basicConfiguration";

/**
 * 组配置
 */
export const GROUP_CONFIG = "groupConfiguration";

/**
 * 得分率排行榜
 */
export const SCORE_RANKINGS = "participationRate";

/**
 * 参与率排行榜
 */
export const ENGAGEMENT_RANKING = "scoringRate";

/**
 * 基础模块类型
 */
export const BASE_MODULE_TYPE = "base";

/**
 * 预设模块类型
 */
export const PRESET_MODULE_TYPE = "evaluation";

/**
 * 排名模块类型
 */
export const RANKING_MODULE_TYPE = "ranking";

/**
 * 选择题输入框占位符
 */
export const PLACEHOLDER_TEXT = "请填写原因";

/**
 * 错误消息提示
 */
export const ERROR_MESSAGE = {
  ERROR_MOA_ACCESS: "该链接仅支持MOA端访问",
  ERROR_OA_NOT_FILLED: "有员工OA未填写",
  ERROR_VERIFICATION_FAILED: "校验未通过",
  ERROR_DESCRIPTION__EMPTY: "主题目描述为空，请补充",
  ERROR_OPTION_EMPTY: "主题目有选项为空，请补充",
  ERROR_ASSOCIATION_OPTION_EMPTY: "关联规则有选项为空，请补充",
};

/**
 * 正确消息提示
 */
export const SUCCESS_MESSAGE = {
  SUCCESS_CONFIGURE_VERIFICATION: "关键配置完整性校验通过",
};

/**
 * 用于标识不同的设备类型。
 * @property {string} DESKTOP - 表示桌面设备，值为 "pc"。
 * @property {string} MOBILE - 表示移动设备，值为 "moa"。
 */
export const DEVICE_TYPE = {
  DESKTOP: "pc",
  MOBILE: "moa",
};

/**
 * 用于标识不同的模块类型。
 * @property {string} SET_ID_MODULE - 需要设置id的模块类型，且id后期不会改变。
 * @property {string} SCALED_FIXED_SCALE_MODULE - 需要固定比例的模块类型。
 * @property {string} MODULE_SELECTION - 基础配置和组配置。
 * @property {string} QUESTION_MODULE - 排序题目模块。
 * @property {string} VALIDATION_MODULE - 预设模块类型。
 * @property {string} LEAGUE_TABLES - 排行榜模块。
 */
export const MODULE_TYPE = {
  SET_ID_MODULE: [RANKING_MODULE_TYPE, BASE_MODULE_TYPE],
  SCALED_FIXED_SCALE_MODULE: [IMAGE_FILE_MOBILE_NAME, BEAUTIFUL_MOBILE_NAME],
  MODULE_SELECTION: [BASE_CONFIG_MOBILE_NAME, GROUP_CONFIG],
  QUESTION_MODULE: [CHOICE_QUESTION_MOBILE_NAME, SHORT_ANSWER_MOBILE_NAME],
  VALIDATION_MODULE: [CHOICE_QUESTION_MOBILE_NAME, BEAUTIFUL_MOBILE_NAME, SHORT_ANSWER_MOBILE_NAME],
  LEAGUE_TABLES: [SCORE_RANKINGS, ENGAGEMENT_RANKING],
};

/**
 * 选项类型
 * @property {string} SINGLE_SELECT_TYPE - 单选类型。
 * @property {string} MULTI_SELECT_TYPE - 多选类型。
 */
export const SELECTION_TYPE = {
  SINGLE_SELECT_TYPE: "radio",
  MULTI_SELECT_TYPE: "checkbox",
};

/**
 * 模板流程状态
 * @property {string} EDIT_STATUS - 编辑状态。
 * @property {string} PREVIEW_STATUS - 预览状态。
 * @property {string} DELIVERY_STATUS - 下发状态。
 * @property {string} SUBMISSION_STATUS - 提交状态。
 */
export const PROCESS_TYPE = {
  EDIT_STATUS: "edit",
  PREVIEW_STATUS: "preview",
  DELIVERY_STATUS: "allots",
  SUBMISSION_STATUS: "loading",
};

/**
 * moa标识
 */
export const MOA_IDENTITY = "$$mx_sso_token$$";

/**
 * 默认未选中状态
 * @type {string}
 */
export const UNCHECKED_STATUS = "item-drag";

/**
 * 选中状态
 * @type {string}
 */
export const SELECTED_STATUS = "item-active";

/**
 * 非选中状态
 * @type {string}
 */
export const UNCHECKED = "item-default";

/**
 * 按钮字体大小
 */
export const BUTTON_FONTS = 35;

/**
 * 最美移动人投票字体大小
 */
export const VOTING_FONTS = 28;

/**
 * 最美移动人信息字体大小
 */
export const INFORMATIONAL_FONTS = 20;

/**
 * moa投票模块默认的列
 */
export const DEFAULT_COLUMN_MOA = 2;

/**
 * 文字缩放比例
 */
export const SCALE_CONFIGURATION = {
  pc: 1,
  moa: 0.55,
};

/**
 * 默认选项
 */
export const DEFAULT_OPTION = 0;

/**
 * 提示信息持续时间
 */
export const DURETION = 5000;

/**
 * 延迟关闭时间
 */
export const DELAY_THE_SHUTDOWN_TIME = 2000;

/**
 * 拖拽组件起始值
 */
export const STARTING_VALUE_COMPONENT = 0;

/**
 * 坐标默认值
 */
export const DEFAULT_COORDINATE = 0;

/**
 * 模块自增系数
 */
export const MODULE_INCREASE_COEFFICIENT = 1;

/**
 * 起始序号
 */
export const START_NUMBER = 1;

/**
 *模块padding比例
 */
export const PADDING_RATIO = 50;

/**
 * 滚动延迟时间
 */
export const DELAY_TIME = 500;

/**
 * 拖拽模块每列高度
 */
export const BASE_HEIGHT = 10;

/**
 * 实际高度与每列高度的比例
 */
export const HEIGHT_RATIO = 2 * BASE_HEIGHT - 1;

/**
 * 拖拽模块最大列数
 */
export const MAX_COL_NUM = 20;

/**
 * 提交数据整理
 */
export const SUBMIT_DATA_COLLATION = {
  objectId: "",
  replyId: "",
  replyRemark: "",
  replyContent: "",
};

/**
 * 投票模块属性配置
 */
export const STAFFING = {
  userId: "员工OA",
  userCode: "员工编号",
  userName: "员工姓名",
  deptName: "部门名称",
  companyName: "单位名称",
  popupTitle: "弹框标题",
  popupContent: "弹框内容",
};

/**
 * 基础配置
 * @property {string} id - 模板的唯一标识符
 * @property {string} name - 模板的名称
 * @property {Object} baseConfig - 模板的基础配置
 * @property {Object} cssStyle - CSS 样式配置
 * @property {string} backgroundImageId - 背景图片的唯一标识符
 * @property {string} backgroundImageName - 背景图片的名称
 * @property {number} paddingPercent - 水平内边距的百分比
 * @property {number} marginPercent - 水平外边距的百分比
 * @property {Array} groupConfig - 组配置
 * @property {Array} modules - 预览模块
 */
export const MOCK_DATA = {
  id: "",
  name: "模板名称",
  baseConfig: {
    cssStyle: {
      backgroundImageId: "",
      backgroundImageName: "请上传背景图",
      paddingPercent: 10,
      marginPercent: 0,
    },
  },
  groupConfig: [],
  modules: [],
};

/**
 * @property {string} moduleType - 模块类型（基础模块）
 * @property {string} image - 模块id（图片模块）
 * @property {string} groupName -  组名称
 * @property {number} x - X 坐标
 * @property {number} y - Y 坐标
 * @property {number} w - 宽度
 * @property {number} h - 高度
 * @property {boolean} moved - 是否移动
 * @property {string} location - 位置（如 "left", "center"）
 * @property {number} paddingPercent - 内边距百分比
 * @property {string} backgroundImageId - 背景图片 ID
 * @property {string} backgroundImageName - 背景图片名称
 * @property {number} aspectRatio - 高宽比
 * @property {string} backgroundColor - 背景颜色
 * @property {string} fontFamily - 字体系列
 * @property {string} fontColor - 字体颜色
 * @property {number} fontSize - 字体大小
 * @property {number} fontWeight - 字体粗细
 * @property {Object} businessData - 业务数据
 * @property {Object} content - 业务数据文本内容
 */
export const MENU_CONFIGURATION = [
  {
    moduleType: BASE_MODULE_TYPE,
    moduleId: IMAGE_FILE_MOBILE_NAME,
    groupName: "",
    cssStyle: {
      x: 0,
      y: 0,
      w: MAX_COL_NUM,
      h: 11,
      moved: false,
      location: "left",
      paddingPercent: 2,
      backgroundImageId: "",
      backgroundImageName: "请上传图片",
      aspectRatio: 0.5,
    },
    businessData: "",
  },
  {
    moduleType: BASE_MODULE_TYPE,
    moduleId: "text",
    groupName: "",
    cssStyle: {
      x: 0,
      y: 0,
      w: MAX_COL_NUM,
      h: 6,
      location: "center",
      paddingPercent: 2,
      backgroundColor: "rgba(0,0,0,0)",
      fontFamily: "微软雅黑",
      fontColor: "rgba(0,0,0,1)",
      fontSize: 14,
      fontWeight: 400,
    },
    businessData: {
      content: "示例标题",
    },
  },
  {
    moduleType: BASE_MODULE_TYPE,
    moduleId: "richText",
    groupName: "",
    cssStyle: {
      x: 0,
      y: 0,
      w: MAX_COL_NUM,
      h: 4,
      moved: false,
      paddingPercent: 2,
      backgroundColor: "rgba(0,0,0,0)",
    },
    businessData: {
      content: `<p><span>示例内容</span></p>`,
    },
  },
];

/**
 * 投票模板配置。
 * @property {string} moduleType - 模块类型。
 * @property {string} moduleId - 模块ID。
 * @property {string} groupName - 组名称。
 * @property {Object} cssStyle - 样式配置。
 * @property {number} cssStyle.x - X坐标。
 * @property {number} cssStyle.y - Y坐标。
 * @property {number} cssStyle.w - 宽度。
 * @property {number} cssStyle.h - 高度。
 * @property {boolean} cssStyle.moved - 是否移动。
 * @property {string} location - 位置。
 * @property {number} paddingPercent - 内边距百分比。
 * @property {string} backgroundImageId- 背景图片ID。
 * @property {string} backgroundImageName - 背景图片名称。
 * @property {number} aspectRatio - 高宽比。
 * @property {string} backgroundColor - 背景颜色。
 * @property {string} fontFamily - 字体。
 * @property {string} fontColor - 字体颜色。
 * @property {number} fontSize - 字体大小。
 * @property {number} fontWeight - 字体粗细。
 * @property {Object} businessData - 业务数据。
 * @property {string} content - 内容。
 */
export const POLL_TEMPLATE = [
  {
    moduleType: PRESET_MODULE_TYPE,
    moduleId: CHOICE_QUESTION_MOBILE_NAME,
    groupName: "无",
    cssStyle: {
      x: 0,
      y: 0,
      w: MAX_COL_NUM,
      h: 6,
      moved: false,
      paddingPercent: 2,
      topicFontSize: 28,
      contentFontSize: 20,
    },
    businessData: {
      id: 1,
      desc: "示例题目",
      selectType: "radio",
      selectRule: "optional",
      needFeedback: false,
      selectMaxNum: 1,
      selectValue: [],
      feedback: "",
      options: [
        { id: "1", desc: "分", needReason: false },
        { id: "10", desc: "分", needReason: false },
        { id: "A", desc: "同意", needReason: false },
        { id: "B", desc: "不同意", needReason: false },
        { id: "C", desc: "其他", needReason: true },
      ],
      assocRules: [],
    },
  },
  {
    moduleType: PRESET_MODULE_TYPE,
    moduleId: SHORT_ANSWER_MOBILE_NAME,
    groupName: "无",
    cssStyle: {
      x: 0,
      y: 0,
      w: MAX_COL_NUM,
      h: 8,
      moved: false,
      paddingPercent: 2,
      topicFontSize: 28,
      contentFontSize: 20,
    },
    businessData: {
      id: 1,
      desc: "示例题目",
      selectRule: "optional",
      assocRules: [],
      disabled: false,
      content: "",
    },
  },
  {
    moduleType: PRESET_MODULE_TYPE,
    moduleId: BEAUTIFUL_MOBILE_NAME,
    groupName: "无",
    vote: false,
    cssStyle: {
      x: 0,
      y: 0,
      w: MAX_COL_NUM / 4,
      h: 10,
      moved: false,
      paddingPercent: 2,
      aspectRatio: 1.5,
    },
    businessData: {
      detailsPopUp: false,
      userId: "",
      userName: "",
      userCode: "",
      deptName: "",
      companyName: "",
      imageId: "",
      imageName: "请上传照片",
      popupTitle: "示例标题",
      popupContent: "<p>示例内容</p>",
    },
  },
];

/**
 * 评分模块配置。
 * @property {string} moduleType - 模块类型。
 * @property {string} moduleId - 模块ID。
 * @property {string} groupName - 组名称。
 * @property {Object} cssStyle - 样式配置。
 * @property {number} cssStyle.x - X坐标。
 * @property {number} cssStyle.y - Y坐标。
 * @property {number} cssStyle.w - 宽度。
 * @property {number} cssStyle.h - 高度。
 * @property {boolean} cssStyle.moved - 是否移动。
 * @property {string} location - 位置。
 * @property {number} paddingPercent - 内边距百分比。
 * @property {string} backgroundImageId- 背景图片ID。
 * @property {string} backgroundImageName - 背景图片名称。
 * @property {number} aspectRatio - 高宽比。
 * @property {string} backgroundColor - 背景颜色。
 * @property {string} fontFamily - 字体。
 * @property {string} fontColor - 字体颜色。
 * @property {number} fontSize - 字体大小。
 * @property {number} fontWeight - 字体粗细。
 * @property {Object} businessData - 业务数据。
 */
export const SCORE_PARTICIPATION = [
  {
    moduleType: RANKING_MODULE_TYPE,
    moduleId: SCORE_RANKINGS,
    groupName: "",
    cssStyle: {
      x: 0,
      y: 0,
      w: MAX_COL_NUM,
      h: 28,
      moved: false,
      paddingPercent: 2,
      backgroundColor: "rgba(0,0,0,0)",
      fontFamily: "微软雅黑",
      fontColor: "rgba(0,0,0,1)",
      fontSize: 20,
      fontWeight: 400,
    },
    businessData: "",
  },
];

/**
 * 默认的子选项配置对象,用于在没有指定子选项时提供一个默认的配置
 * @property {string} desc - 题目描述
 * @property {string} selectType - 选项类型，例如 "radio"
 * @property {string} selectRule - 选项类型规则，例如 "optional"
 * @property {number} selectMaxNum - 最多可以选择的选项数量
 * @property {Array<Object>} options - 选项列表
 * @property {string} options.id - 选项的唯一标识符
 * @property {string} options.desc - 选项的描述
 * @property {boolean} options.needReason - 填写原因
 */
export const DEFAULT_SUB_OPTION = {
  desc: "默认题目",
  selectType: "radio",
  selectRule: "optional",
  selectMaxNum: 1,
  options: [
    { id: "A", desc: "选项描述一", needReason: false },
    { id: "B", desc: "选项描述二", needReason: false },
    { id: "C", desc: "选项描述三", needReason: false },
    { id: "D", desc: "选项描述四", needReason: false },
  ],
};

/**
 * 子题目类型的数组
 * @property {string} label - 子题目的标签
 * @property {string} value - 子题目的值
 */
export const SUBTOPIC_TYPE = [
  { label: "单选", value: "radio" },
  { label: "多选", value: "checkbox" },
];

/**
 * 选项规则
 * @property {string} label - 选项规则的标签
 * @property {string} value - 选项规则的值
 */
export const SELECT_RULE = [
  { label: "选答", value: "optional" },
  { label: "必答", value: "required" },
];

/**
 * 是否必填
 * @property {string} label - 必填的标签
 * @property {string} value - 必填的值
 */
export const REQUIRED = [
  { label: "否", value: false },
  { label: "是", value: true },
];

/**
 * 规则类型
 * @property {string} label - 规则类型的标签
 * @property {string} value - 规则类型的值
 */
export const TYPE_RULES = [
  { label: "选答", value: "optional" },
  { label: "必答", value: "required" },
  { label: "禁答", value: "disabled" },
];

/**
 * 菜单名称配置对象
 * @property {string} image - 图片菜单项
 * @property {string} text - 简文本菜单项
 * @property {string} richText - 富文本菜单项
 * @property {string} beautifulMobilePerson - 最美移动人模块菜单项
 * @property {string} choiceQuestion - 选择题模块菜单项
 * @property {string} participationRate - 参与率排行榜菜单项
 * @property {string} scoreObtained - 得分数排行榜菜单项
 * @property {string} shortAnswerQuestion - 简答题模块菜单项
 */
export const MENU_NAME_CONFIGURATION = {
  image: "图片",
  text: "简文本",
  richText: "富文本",
  beautifulMobilePerson: "最美移动人模块",
  choiceQuestion: "选择题模块",
  participationRate: "参与率排行榜",
  scoreObtained: "得分数排行榜",
  shortAnswerQuestion: "简答题模块",
};

/**
 * 位置配置数组,包含不同位置选项的名称和对应的标题
 * @property {string} name - 位置的名称
 * @property {string} title - 位置的标题
 * @property {string} titleActive - 位置激活时的标题
 */
export const LOCATION = [
  {
    name: "居左",
    title: "left",
    titleActive: "leftActive",
  },
  {
    name: "水平居中",
    title: "center",
    titleActive: "centerActive",
  },
  {
    name: "居右",
    title: "right",
    titleActive: "rightActive",
  },
];

/**
 * 字体宽度配置数组,包含不同字体宽度的数值
 */
export const FONT_WIDTH = [100, 200, 300, 400, 500, 600, 700, 800, 900];

/**
 * 字体系列配置数组,包含不同的字体名称
 */
export const FONT_FAMILY = ["微软雅黑", "宋体", "黑体", "楷体"];

/**
 * 单位名称配置数组,包含不同单位的名称
 */
export const COMPANY_NAME = [
  "省公司",
  "杭州分公司",
  "宁波分公司",
  "温州分公司",
  "金华分公司",
  "台州分公司",
  "绍兴分公司",
  "嘉兴分公司",
  "湖州分公司",
  "丽水分公司",
  "舟山分公司",
  "衢州分公司",
];

/**
 * 投票表单配置数组,包含不同投票表单字段的标签和值
 * @property {string} label - 字段的标签
 * @property {string} value - 字段的值
 */
export const VOTING_FORM_CONFIGURATION = [
  { label: "展示标题", value: "showTitle" },
  { label: "展示内容", value: "showContent" },
  { label: "类型", value: "personnelType" },
  { label: "名称", value: "theNameOfThePerson" },
  { label: "id", value: "id" },
  { label: "员工编号", value: "code" },
  { label: "部门名称", value: "deptName" },
  { label: "单位名称", value: "companyName" },
];

/**
 * 下发群组列表默认参数
 * @property {string} pageNum - 分页页码
 * @property {string} pageSize - 分页大小
 * @property {string} keyword - 搜索关键词
 */
export const DELIVER_GROUP_PARAMETERS = {
  pageNum: 1,
  pageSize: 999,
  keyword: "",
};

/**
 * 导出配置对象
 * @property {string} replys - 答复数据
 * @property {string} users - 人员数据
 */
export const EXPORT_CONFIGURATION_OBJECT = {
  replys: "答复数据",
  users: "人员数据",
};

/**
 * moa端宽度
 */
export const MOA_EQUIPMENT_WIDTH = 375;

/**
 * pc端宽度
 */
export const PC_EQUIPMENT_WIDTH = 2560;

/**
 * 关联规则为必答
 */
export const REQUIRED_TYPE = "required";

/**
 * 子选项类型
 */
export const SUB_OPTIONS = "subOptions";

/**
 * 多选数量默认值
 */
export const OPTION_DEFAULT = 1;

/**
 * 添加子选项配置
 * @property {object} options - 子选项配置
 * @property {object} id - 子选项id
 * @property {object} desc - 子选项描述
 * @property {object} needReason - 是否需要填写原因
 * @property {object} rules - 规则配置
 * @property {string} questionId - 问题ID
 * @property {Array<string>} optionIds - 选项ID数组
 * @property {string} relation - 关联规则
 * @property {Array<string>} disableIds - 禁用选项ID数组
 */
export const ADD_SUB_OPTIONS = {
  options: {
    id: "",
    desc: "",
    needReason: false,
  },
  rules: {
    questionId: "",
    optionIds: [],
    relation: "optional",
    disableIds: [],
  },
};

/**
 * 第一个表格
 */
export const FIRST_FORM = 0;
